home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Falcon / WHIP031 / VLM / SPARKLE2 / SOURCE / SPARKLE2.S < prev    next >
Encoding:
Text File  |  1999-08-19  |  11.5 KB  |  783 lines

  1. ; Copyright 1999 Tomas Berndtsson <tomas@nocrew.org>
  2. * Updates by Earx/Fun
  3.  
  4.       include    macros.s
  5.  
  6. VLM_MODULE:        =    1
  7. SHOWVBL:        =    0
  8.  
  9. XRES:            =    320
  10. YRES:            =    256
  11. SCRXRES:        =    320
  12. SCRYRES:        =    240
  13.  
  14. ; estimated values
  15. MAXDOTSPERLINE:        =    500
  16. NRLINES:        =    256
  17.  
  18. DEFAULT_ROT:        =    80
  19. DEFAULT_LINES:        =    0
  20. DEFAULT_LEFT_TYPE:      =    0
  21. DEFAULT_RIGHT_TYPE:     =    0
  22.  
  23.     IFNE    VLM_MODULE
  24.     comment    head=%101
  25.     opt    d-
  26.     output    e:\whip!\vlm\sparkle.vlm
  27.     include    vlmserv.s
  28.     ELSE
  29.     include    vlmserv.s
  30.     ENDC
  31.  
  32.     text
  33.  
  34.     IFEQ    VLM_MODULE
  35.     incbin    miniwhip.bin
  36.     ENDC
  37.  
  38.     dc.b    "VLM2"
  39.     dc.l    infotext
  40.     dc.l    settings
  41.     dc.l    init
  42.     dc.l    deinit
  43.     dc.l    main
  44.  
  45. main:    bsr    scrswap
  46.  
  47.     IFNE    SHOWVBL
  48.  
  49.     movea.l    scrp,a3
  50.     move.w    $4bc.w,d7
  51.     move.w    old468(pc),d6
  52.     move.w    d7,old468
  53.     sub.w    d6,d7
  54.     subq.w    #1,d7
  55.     cmpi.w    #50,d7
  56.     bhs.s    .end_showvbl
  57.  
  58. .vsl:    move.l    #$ffff0000,(a3)+
  59.     dbra    d7,.vsl
  60.  
  61. .end_showvbl:
  62.     moveq    #0,d0
  63.     move.l    d0,(a3)+
  64.     move.l    d0,(a3)+
  65.     move.l    d0,(a3)+
  66.     move.l    d0,(a3)+
  67.  
  68.     ENDC
  69.  
  70.     tst.w    drawtype+2
  71.     bne    blur
  72.  
  73.     bsr    clrspark
  74.  
  75.     move.l    scrp,a0
  76.     lea    pal,a4
  77.     moveq    #0,d0
  78.     move.w    $4bc.w,d0
  79.     lsr.w    #3,d0
  80.     andi.w    #$01ff,d0
  81.     lea    (a4,d0.l*2),a4
  82.  
  83.     move.w    $4bc.w,d0
  84.     mulu.w    option_rot+2,d0
  85.     lsr.l    #8,d0
  86.     andi.w    #$00ff,d0
  87.     lea    (sincos,d0.w*4),a2
  88.  
  89. left:    tst.l    option_left_type
  90.     bne.w    .not_spectrum
  91.     vlm_get_left_spec a5
  92.     sub.w    #12042,2(a5)
  93.     bpl.s    .nonegspec
  94.     clr.w    2(a5)
  95. .nonegspec
  96.     bra.s    .go_on
  97. .not_spectrum
  98.     vlm_get_left_osci a5
  99.     lea    fake_left_spec,a3
  100.     bsr    fixosci
  101.     lea    fake_left_spec,a5
  102.  
  103. .go_on:    move.w    #128,d7
  104.     move.w    option_lines+2,d2
  105.     asr.w    d2,d7
  106.     subq.w    #1,d7
  107.     moveq    #1,d3
  108.     asl.w    d2,d3
  109.     subq.w    #1,d3
  110.     add.w    d3,d3
  111.  
  112. .ll:    move.w    (a5)+,d2
  113.     add.w    d3,a5
  114.     lsr.w    #8,d2
  115.     move.w    (a2)+,d1
  116.     muls.w    d2,d1
  117.     swap    d1
  118.     move.w    (a2)+,d0
  119.     muls.w    d2,d0
  120.     swap    d0
  121.     add.w    d3,a2
  122.     add.w    d3,a2
  123.     add.w    x1(pc),d0
  124.     add.w    y1(pc),d1
  125.     move.w    d0,x2
  126.     move.w    d1,y2
  127.     move.w    (a4,d2.w*2),a3
  128.     bsr    drawline
  129.     dbra    d7,.ll
  130.  
  131. right:    tst.l    option_right_type
  132.     bne.w    .not_spectrum
  133.     vlm_get_right_spec a5
  134.     bra.s    .go_on
  135. .not_spectrum:
  136.     vlm_get_right_osci a5
  137.     lea    fake_right_spec,a3
  138.     bsr    fixosci
  139.     lea    fake_right_spec,a5
  140.  
  141. .go_on:    move.w    #128,d7
  142.     move.w    option_lines+2,d2
  143.     asr.w    d2,d7
  144.     subq.w    #1,d7
  145.     moveq    #1,d3
  146.     asl.w    d2,d3
  147.     subq.w    #1,d3
  148.     add.w    d3,d3
  149.  
  150. .rl:    move.w    (a5)+,d2
  151.     add.w    d3,a5
  152.     lsr.w    #8,d2
  153.     move.w    (a2)+,d1
  154.     muls.w    d2,d1
  155.     swap    d1
  156.     move.w    (a2)+,d0
  157.     muls.w    d2,d0
  158.     swap    d0
  159.     add.w    d3,a2
  160.     add.w    d3,a2
  161.     add.w    x1(pc),d0
  162.     add.w    y1(pc),d1
  163.     move.w    d0,x2
  164.     move.w    d1,y2
  165.     move.w    (a4,d2.w*2),a3
  166.     bsr    drawline
  167.     dbra    d7,.rl
  168.     rts
  169.  
  170. blur:    bsr    blurspark
  171.  
  172.     move.l    scrp,a0
  173.     lea    pal,a4
  174.     moveq    #0,d0
  175.     move.w    $4bc.w,d0
  176.     lsr.w    #3,d0
  177.     andi.w    #$01ff,d0
  178.     lea    (a4,d0.l*2),a4
  179.  
  180.     move.w    $4bc.w,d0
  181.     mulu.w    option_rot+2,d0
  182.     lsr.l    #8,d0
  183.     andi.w    #$00ff,d0
  184.     lea    (sincos,d0.w*4),a2
  185.  
  186. .left:    tst.l    option_left_type
  187.     bne.w    .not_spectrum
  188.     vlm_get_left_spec a5
  189.     sub.w    #12042,2(a5)
  190.     bpl.s    .nonegspec
  191.     clr.w    2(a5)
  192. .nonegspec:
  193.     bra.s    .go_on
  194. .not_spectrum:
  195.     vlm_get_left_osci a5
  196.     lea    fake_left_spec,a3
  197.     bsr    fixosci
  198.     lea    fake_left_spec,a5
  199.  
  200. .go_on:    move.w    #128,d7
  201.     move.w    option_lines+2,d2
  202.     asr.w    d2,d7
  203.     subq.w    #1,d7
  204.     moveq    #1,d3
  205.     asl.w    d2,d3
  206.     subq.w    #1,d3
  207.     add.w    d3,d3
  208.  
  209. .ll:    move.w    (a5)+,d2
  210.     add.w    d3,a5
  211.     lsr.w    #8,d2
  212.     move.w    (a2)+,d1
  213.     muls.w    d2,d1
  214.     swap    d1
  215.     move.w    (a2)+,d0
  216.     muls.w    d2,d0
  217.     swap    d0
  218.     add.w    d3,a2
  219.     add.w    d3,a2
  220.     add.w    x1(pc),d0
  221.     add.w    y1(pc),d1
  222.     move.w    d0,x2
  223.     move.w    d1,y2
  224.     move.w    (a4,d2.w*2),a3
  225.     bsr    drawblurline
  226.     dbra    d7,.ll
  227.  
  228. .right:    tst.l    option_right_type
  229.     bne.w    .r_not_spectrum
  230.     vlm_get_right_spec a5
  231.     bra.s    .r_go_on
  232. .r_not_spectrum:
  233.     vlm_get_right_osci a5
  234.     lea    fake_right_spec,a3
  235.     bsr    fixosci
  236.     lea    fake_right_spec,a5
  237.  
  238. .r_go_on:
  239.     move.w    #128,d7
  240.     move.w    option_lines+2,d2
  241.     asr.w    d2,d7
  242.     subq.w    #1,d7
  243.     moveq    #1,d3
  244.     asl.w    d2,d3
  245.     subq.w    #1,d3
  246.     add.w    d3,d3
  247.  
  248. .rl:    move.w    (a5)+,d2
  249.     add.w    d3,a5
  250.     lsr.w    #8,d2
  251.     move.w    (a2)+,d1
  252.     muls.w    d2,d1
  253.     swap    d1
  254.     move.w    (a2)+,d0
  255.     muls.w    d2,d0
  256.     swap    d0
  257.     add.w    d3,a2
  258.     add.w    d3,a2
  259.     add.w    x1(pc),d0
  260.     add.w    y1(pc),d1
  261.     move.w    d0,x2
  262.     move.w    d1,y2
  263.     move.w    (a4,d2.w*2),a3
  264.     bsr    drawblurline
  265.     dbra    d7,.rl
  266.     rts
  267.  
  268. old468:
  269.     DC.W    0
  270.  
  271. init:    move.l    a0,service_struct
  272.     vlm_set_resolution #VLM_320x240x16
  273.     
  274.     lea    pal,a1
  275.     lea    512*2(a1),a0
  276.     moveq    #128-1,d7
  277. .loop:    move.w    (a1)+,-(a0)
  278.     move.w    (a1)+,-(a0)
  279.     dbra    d7,.loop
  280.     lea    -256*2(a1),a1
  281.     lea    256*2(a0),a0
  282.     moveq    #128-1,d7
  283. .loop2:    move.l    (a1)+,(a0)+
  284.     dbra    d7,.loop2
  285.  
  286.     lea    scr1,a0
  287.     bsr    clrscr
  288.     lea    scr2,a0
  289.     bsr    clrscr
  290.     lea    scr3,a0
  291.     bsr    clrscr
  292.  
  293.     move.l    #-1,saved1
  294.     move.l    #-1,saved2
  295.     move.l    #-1,saved3
  296.     rts
  297.  
  298. deinit:    rts
  299.  
  300. scrswap:
  301.     lea    savedp,a0
  302.     move.l    (a0)+,d0
  303.     move.l    (a0)+,-8(a0)
  304.     move.l    (a0),-4(a0)
  305.     move.l    d0,(a0)
  306.     
  307.     lea    scrp,a0
  308.     move.l    (a0)+,d0
  309.     move.l    (a0)+,-8(a0)
  310.     move.l    (a0),-4(a0)
  311.     move.l    d0,(a0)
  312.     move.l    d0,d1
  313.     lsr.w    #8,d0
  314.     move.l    d0,$ffff8200.w
  315.     move.b    d1,$ffff820d.w
  316.     rts
  317.  
  318. * ORred line (RGB overlay)
  319. drawline:
  320.     movem.l    d3/d7/a2,-(sp)
  321.  
  322.     movem.w    x1(pc),d0-d3
  323.     cmp.w    d0,d1
  324.     bge.s    .x_ok
  325.     exg    d0,d1
  326. .x_ok:    cmp.w    d2,d3
  327.     bge.s    .y_ok
  328.     exg    d2,d3
  329. .y_ok:
  330.  
  331. * d0=minx, d1=maxx, d2=miny, d3=maxy
  332.  
  333.     move.w    d1,d4
  334.     sub.w    d0,d4    ; dx
  335.     move.w    d3,d5
  336.     sub.w    d2,d5    ; dy
  337.     
  338.     cmp.w    d4,d5
  339.     bgt    yslope
  340. xslope
  341.     move.l    #640,d6
  342.     cmp.w    x1,d0
  343.     bne.s    .x1notmin
  344.     move.w    y1,d1
  345.     cmp.w    y2,d1
  346.     blt.s    .nonegstep1
  347.     neg.l    d6
  348. .nonegstep1
  349.     bra.s    .consts
  350. .x1notmin
  351.     move.w    y2,d1
  352.     cmp.w    y1,d1
  353.     blt.s    .nonegstep2
  354.     neg.l    d6
  355. .nonegstep2
  356.  
  357. .consts
  358.     add.w    d5,d5    ; d5 = c1=2*dy
  359.     move.w    d5,d3
  360.     sub.w    d4,d3    ; d3 = p=2*dy-dx
  361.     move.w    d4,d7
  362.     add.w    d7,d7    ; d7 = 2*dx
  363.  
  364.     mulu.w    #640,d1
  365.     ext.l    d0
  366.     add.l    d0,d1
  367.     add.l    d0,d1
  368.     lea    (a0,d1.l),a2
  369.  
  370.     move.w    a3,d0
  371.     
  372.     tst.w    d3
  373. .linel
  374.     bpl.s    .pneg
  375.     
  376.     or.w    d0,(a2)+
  377.     add.w    d5,d3
  378.     dbra    d4,.linel
  379.  
  380.     bra    linedone
  381. .pneg
  382.     or.w    d0,(a2)+
  383.     add.l    d6,a2
  384.     sub.w    d7,d3
  385.     add.w    d5,d3
  386.     dbra    d4,.linel
  387.  
  388.     bra    linedone
  389.  
  390. yslope
  391.     moveq    #2,d6
  392.     cmp.w    y1,d2
  393.     bne.s    .x1notmin
  394.     move.w    x1,d0
  395.     cmp.w    x2,d0
  396.     blt.s    .nonegstep1
  397.     neg.l    d6
  398. .nonegstep1
  399.     bra.s    .consts
  400. .x1notmin
  401.     move.w    x2,d0
  402.     cmp.w    x1,d0
  403.     blt.s    .nonegstep2
  404.     neg.l    d6
  405. .nonegstep2
  406.  
  407. .consts
  408.     add.w    d4,d4    ; d4 = c1=2*dx
  409.     move.w    d4,d3
  410.     sub.w    d5,d3    ; d3 = p=2*dx-dy
  411.     move.w    d5,d7
  412.     add.w    d7,d7    ; d7 = 2*dy
  413.  
  414.     move.w    d2,d1
  415.     mulu.w    #640,d1
  416.     ext.l    d0
  417.     add.l    d0,d1
  418.     add.l    d0,d1
  419.     lea    (a0,d1.l),a2
  420.  
  421.     move.w    a3,d0
  422.     movea.w    #640,a6
  423.     tst.w    d3
  424. .linel
  425.     bpl.s    .pneg
  426.  
  427.     or.w    d0,(a2)
  428.     adda.l    a6,a2
  429.     add.w    d4,d3
  430.     dbra    d5,.linel
  431.  
  432.     bra    linedone
  433. .pneg
  434.     or.w    d0,(a2)
  435.     adda.l    a6,a2
  436.     add.l    d6,a2
  437.     sub.w    d7,d3
  438.     add.w    d4,d3
  439.     dbra    d5,.linel
  440.  
  441. linedone:
  442.     movem.l    (sp)+,d3/d7/a2
  443.     rts
  444.  
  445. * ADDed line (voor motionblur beweegbrul)
  446. drawblurline:
  447.     movem.l    d3/d7/a2,-(sp)
  448.  
  449.     movem.w    x1(pc),d0-d3
  450.     cmp.w    d0,d1
  451.     bge.s    .x_ok
  452.     exg    d0,d1
  453. .x_ok:    cmp.w    d2,d3
  454.     bge.s    .y_ok
  455.     exg    d2,d3
  456. .y_ok:
  457.  
  458. * d0=minx, d1=maxx, d2=miny, d3=maxy
  459.  
  460.     move.w    d1,d4
  461.     sub.w    d0,d4    ; dx
  462.     move.w    d3,d5
  463.     sub.w    d2,d5    ; dy
  464.     
  465.     cmp.w    d4,d5
  466.     bgt    .yslope
  467. .xslope:
  468.     move.l    #640,d6
  469.     cmp.w    x1,d0
  470.     bne.s    .x1notmin
  471.     move.w    y1,d1
  472.     cmp.w    y2,d1
  473.     blt.s    .nonegstep1
  474.     neg.l    d6
  475. .nonegstep1
  476.     bra.s    .consts
  477. .x1notmin
  478.     move.w    y2,d1
  479.     cmp.w    y1,d1
  480.     blt.s    .nonegstep2
  481.     neg.l    d6
  482. .nonegstep2
  483.  
  484. .consts:
  485.     add.w    d5,d5    ; d5 = c1=2*dy
  486.     move.w    d5,d3
  487.     sub.w    d4,d3    ; d3 = p=2*dy-dx
  488.     move.w    d4,d7
  489.     add.w    d7,d7    ; d7 = 2*dx
  490.  
  491.     mulu.w    #640,d1
  492.     ext.l    d0
  493.     add.l    d0,d1
  494.     add.l    d0,d1
  495.     lea    (a0,d1.l),a2
  496.  
  497.     move.w    a3,d0
  498.     move.w    #%0111101111101111,d1
  499.     lsr.w    #1,d0
  500.     and.w    d1,d0
  501.     
  502.     move.w    d3,d3
  503.  
  504. .linel:    bpl.s    .pneg
  505.     move.w    (a2),d2
  506.     lsr.w    #1,d2
  507.     and.w    d1,d2
  508.     add.w    d0,d2
  509.     move.w    d2,(a2)+
  510.     add.w    d5,d3
  511.     dbra    d4,.linel
  512.  
  513.     bra    .linedone
  514.  
  515. .pneg:    move.w    (a2),d2
  516.     lsr.w    #1,d2
  517.     and.w    d1,d2
  518.     add.w    d0,d2
  519.     move.w    d2,(a2)+
  520.     add.l    d6,a2
  521.     sub.w    d7,d3
  522.     add.w    d5,d3
  523.     dbra    d4,.linel
  524.  
  525.     bra    .linedone
  526.  
  527. .yslope:
  528.     moveq    #2,d6
  529.     cmp.w    y1,d2
  530.     bne.s    .yx1notmin
  531.     move.w    x1,d0
  532.     cmp.w    x2,d0
  533.     blt.s    .ynonegstep1
  534.     neg.l    d6
  535. .ynonegstep1:
  536.     bra.s    .yconsts
  537. .yx1notmin:
  538.     move.w    x2,d0
  539.     cmp.w    x1,d0
  540.     blt.s    .ynonegstep2
  541.     neg.l    d6
  542. .ynonegstep2:
  543.  
  544. .yconsts:
  545.     add.w    d4,d4    ; d4 = c1=2*dx
  546.     move.w    d4,d3
  547.     sub.w    d5,d3    ; d3 = p=2*dx-dy
  548.     move.w    d5,d7
  549.     add.w    d7,d7    ; d7 = 2*dy
  550.  
  551.     move.w    d2,d1
  552.     mulu.w    #640,d1
  553.     ext.l    d0
  554.     add.l    d0,d1
  555.     add.l    d0,d1
  556.     lea    (a0,d1.l),a2
  557.  
  558.     move.w    a3,d0
  559.     movea.w    #640,a6
  560.     move.w    #%0111101111101111,d1
  561.     lsr.w    #1,d0
  562.     and.w    d1,d0
  563.     move.w    d3,d3
  564.  
  565. .ylinel:
  566.     bpl.s    .ypneg
  567.     move.w    (a2),d2
  568.     lsr.w    #1,d2
  569.     and.w    d1,d2
  570.     add.w    d0,d2
  571.     move.w    d2,(a2)
  572.     adda.l    a6,a2
  573.     add.w    d4,d3
  574.     dbra    d5,.ylinel
  575.  
  576.     bra.s    .linedone
  577.  
  578. .ypneg:    move.w    (a2),d2
  579.     lsr.w    #1,d2
  580.     and.w    d1,d2
  581.     add.w    d0,d2
  582.     move.w    d2,(a2)
  583.     adda.l    a6,a2
  584.     adda.l    d6,a2
  585.     sub.w    d7,d3
  586.     add.w    d4,d3
  587.     dbra    d5,.ylinel
  588.  
  589. .linedone:
  590.     movem.l    (sp)+,d3/d7/a2
  591.     rts
  592.  
  593. fixosci:
  594.     moveq    #128-1,d7
  595.     move.w    #$8000,d2
  596.  
  597. .fol:    movem.w    (a5)+,d0-d1
  598.     add.l    d0,d1
  599.     asr.l    #2,d1
  600.     add.w    d2,d1
  601.     move.w    d1,(a3)+
  602.     dbra    d7,.fol
  603.  
  604.     rts
  605.  
  606. clrscr:    moveq    #0,d0
  607.     moveq    #0,d1
  608.     moveq    #0,d2
  609.     moveq    #0,d3
  610.     moveq    #0,d4
  611.     moveq    #0,d5
  612.     moveq    #0,d6
  613.     sub.l    a1,a1
  614.     sub.l    a2,a2
  615.     sub.l    a3,a3
  616.     sub.l    a4,a4
  617.     sub.l    a5,a5
  618.     add.l    #SCRXRES*SCRYRES*2+24*2,a0
  619.     move.w    #SCRXRES*SCRYRES/24-1,d7
  620.  
  621. .cl:    movem.l    d0-6/a1-5,-(a0)
  622.     dbra    d7,.cl
  623.     rts
  624.  
  625. clrspark:
  626.     movea.l    scrp,a0
  627.     lea    640*7+92(a0),a0
  628.     move.w    #226-1,d7
  629.  
  630.     moveq    #0,d0
  631.     moveq    #0,d1
  632.     moveq    #0,d2
  633.     moveq    #0,d3
  634.     moveq    #0,d4
  635.     moveq    #0,d5
  636.     moveq    #0,d6
  637.     movea.l    d0,a1
  638.     movea.l    d0,a2
  639.     movea.l    d0,a3
  640.     movea.l    d0,a4
  641.     movea.l    d0,a5
  642.     movea.l    d0,a6
  643.  
  644. .loop:    movem.l    d0-d6/a1-a6,(a0)
  645.     movem.l    d0-d6/a1-a6,52*1(a0)
  646.     movem.l    d0-d6/a1-a6,52*2(a0)
  647.     movem.l    d0-d6/a1-a6,52*3(a0)
  648.     movem.l    d0-d6/a1-a6,52*4(a0)
  649.     movem.l    d0-d6/a1-a6,52*5(a0)
  650.     movem.l    d0-d6/a1-a6,52*6(a0)
  651.     movem.l    d0-d6/a1-a6,52*7(a0)
  652.     movem.l    d0-d6/a1-a6,52*8(a0)
  653.     lea    640(a0),a0
  654.     dbra    d7,.loop
  655.  
  656.     rts
  657.  
  658. blurspark:
  659.     movea.l    scrp,a0
  660.     lea    640*7+92(a0),a0
  661.     move.w    #226-1,d7
  662.     movea.l    scrp+8,a1
  663.     lea    640*7+92(a1),a1
  664.     move.l    #%01111011111011110111101111101111,d1
  665.     move.l    #640-224*2,d2
  666.  
  667. .yloop:    moveq    #224/8-1,d6
  668.  
  669. .xloop:
  670.     REPT    4
  671.     move.l    (a1)+,d0
  672.     lsr.l    #1,d0
  673.     and.l    d1,d0
  674.     move.l    d0,(a0)+
  675.     ENDR
  676.     dbra    d6,.xloop
  677.  
  678.     adda.l    d2,a0
  679.     adda.l    d2,a1
  680.     dbra    d7,.yloop
  681.  
  682.     rts
  683.  
  684.     data
  685.  
  686. scrp:    dc.l    scr1+16*SCRXRES,scr2+16*SCRXRES,scr3+16*SCRXRES
  687. savedp:    dc.l    saved1,saved2,saved3
  688.  
  689. infotext:
  690.     dc.b    "SPARKLING LINES II",0
  691.     dc.b    "Author:  NoBrain and eARx",0
  692.     dc.b    "Version: 1.0",0
  693.     dc.b    "Date:    19-08-1999",0
  694.     dc.b    0
  695.     even
  696.     
  697. settings:
  698.     dc.l    5
  699.  
  700.     dc.l    drawtype_txt
  701.     dc.l    2
  702. drawtype:
  703.     dc.l    0
  704.     dc.l    drawtype_tbl
  705.  
  706.     dc.l    parrotname
  707.     dc.l    3
  708. option_rot:
  709.     dc.l    DEFAULT_ROT
  710.     dc.l    parrotstruct
  711.  
  712.     dc.l    parlinesname
  713.     dc.l    3
  714. option_lines:
  715.     dc.l    DEFAULT_LINES
  716.     dc.l    parlinesstruct
  717.  
  718.     dc.l    parltypename
  719.     dc.l    2
  720. option_left_type:
  721.     dc.l    DEFAULT_LEFT_TYPE
  722.     dc.l    type_struct
  723.  
  724.     dc.l    parrtypename
  725.     dc.l    2
  726. option_right_type:
  727.     dc.l    DEFAULT_RIGHT_TYPE
  728.     dc.l    type_struct
  729.  
  730. drawtype_txt:
  731.     dc.b    "DRAWING TYPE",0
  732. parrotname:
  733.     dc.b    'ROTATION SPEED',0
  734. parlinesname:
  735.     dc.b    'GRANULARITY',0
  736. parltypename:
  737.     dc.b    'LEFT CHANNEL TYPE',0
  738. parrtypename:
  739.     dc.b    'RIGHT CHANNEL TYPE',0
  740.     even
  741.  
  742. parrotstruct:
  743.     dc.l    0,255
  744. parlinesstruct:
  745.     dc.l    0,3
  746. type_struct:
  747.     dc.l    2
  748.     dc.b    'SPECTRUM',0
  749.     dc.b    'OSCILLOSCOPE',0
  750. drawtype_tbl:
  751.     dc.l    2
  752.     dc.b    "Clear/Or",0
  753.     dc.b    "Blur (ZZzz)",0
  754.     even
  755.         
  756. x1:    dc.w    160
  757. x2:    dc.w    319
  758. y1:    dc.w    120
  759. y2:    dc.w    199
  760.  
  761. sincos:    incbin    sico256.tab
  762.     incbin    sico256.tab
  763. pal:    incbin    line256.pal
  764.     ds.w    256*2
  765.  
  766.     bss
  767.  
  768. tmpscrp:
  769.     ds.l    1
  770. service_struct:
  771.     ds.l    1
  772.     
  773. fake_left_spec:
  774.     ds.w    128
  775. fake_right_spec:
  776.     ds.w    128
  777. saved1:    ds.l    1+NRLINES*MAXDOTSPERLINE
  778. saved2:    ds.l    1+NRLINES*MAXDOTSPERLINE
  779. saved3:    ds.l    1+NRLINES*MAXDOTSPERLINE
  780.  
  781. scr1:    ds.w    XRES*YRES
  782. scr2:    ds.w    XRES*YRES
  783. scr3:    ds.w    XRES*YRES